#!/bin/bash

# 记账本APP打包脚本

echo "📱 开始打包记账本安卓APP..."

# 设置项目根目录
PROJECT_ROOT="/home/zhangdaye/node_vue"
cd "$PROJECT_ROOT"

# 检查是否安装了Cordova
if ! command -v cordova &> /dev/null; then
    echo "❌ Cordova未安装，请先安装: sudo npm install -g cordova"
    exit 1
fi

# 检查前端构建文件是否存在
if [ ! -d "frontend/dist" ]; then
    echo "🔨 构建前端项目..."
    cd frontend
    npm run build --skip-type-check
    cd "$PROJECT_ROOT"
fi

# 创建Cordova项目（如果不存在）
if [ ! -d "mobile" ]; then
    echo "📦 创建Cordova项目..."
    cordova create mobile com.accounting.app "记账本"
    cd mobile
    cordova platform add android
    cd "$PROJECT_ROOT"
fi

# 复制构建文件到Cordova项目
echo "📋 复制文件到Cordova项目..."
rm -rf mobile/www/*
cp -r frontend/dist/* mobile/www/

# 修改API基础URL为本地服务器IP
echo "🔧 配置API地址..."
# 获取本机IP地址
LOCAL_IP=$(hostname -I | awk '{print $1}')
echo "本机IP地址: $LOCAL_IP"

# 在移动端，需要将API请求指向开发服务器的IP地址
sed -i "s|baseURL: '/api'|baseURL: 'http://${LOCAL_IP}:3000/api'|g" mobile/www/assets/*.js

# 更新Cordova配置
echo "⚙️  更新Cordova配置..."
cat > mobile/config.xml << 'EOF'
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.accounting.app" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>记账本</name>
    <description>一个简单易用的记账本应用</description>
    <author email="team@accounting.app" href="https://accounting.app">
        记账本团队
    </author>
    <content src="index.html" />
    
    <!-- 网络访问权限 -->
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    
    <platform name="android">
        <allow-intent href="market:*" />
        <!-- 允许网络请求 -->
        <access origin="*" />
        <allow-navigation href="*" />
        
        <!-- 图标配置 -->
        <icon density="ldpi" src="res/icon/android/icon-36-ldpi.png" />
        <icon density="mdpi" src="res/icon/android/icon-48-mdpi.png" />
        <icon density="hdpi" src="res/icon/android/icon-72-hdpi.png" />
        <icon density="xhdpi" src="res/icon/android/icon-96-xhdpi.png" />
        <icon density="xxhdpi" src="res/icon/android/icon-144-xxhdpi.png" />
        <icon density="xxxhdpi" src="res/icon/android/icon-192-xxxhdpi.png" />
    </platform>
    
    <!-- 应用偏好设置 -->
    <preference name="DisallowOverscroll" value="true" />
    <preference name="android-minSdkVersion" value="22" />
    <preference name="android-targetSdkVersion" value="33" />
    <preference name="StatusBarOverlaysWebView" value="false" />
    <preference name="StatusBarBackgroundColor" value="#1989fa" />
    <preference name="StatusBarStyle" value="lightcontent" />
    
    <!-- 插件 -->
    <plugin name="cordova-plugin-whitelist" version="1" />
    <plugin name="cordova-plugin-statusbar" version="4.0.0" />
    <plugin name="cordova-plugin-splashscreen" version="6.0.2" />
</widget>
EOF

# 创建简单的图标（如果不存在）
echo "🎨 创建应用图标..."
cd mobile
mkdir -p res/icon/android

# 创建简单的占位图标（实际项目中应该使用专业图标）
for size in "36:ldpi" "48:mdpi" "72:hdpi" "96:xhdpi" "144:xxhdpi" "192:xxxhdpi"; do
    IFS=':' read -r pixels density <<< "$size"
    # 这里创建一个简单的颜色方块作为图标，实际项目中应该使用真正的图标
    magick -size ${pixels}x${pixels} xc:"#1989fa" res/icon/android/icon-${pixels}-${density}.png 2>/dev/null || {
        # 如果没有ImageMagick，创建一个简单的文本文件作为占位符
        echo "需要应用图标" > res/icon/android/icon-${pixels}-${density}.png
    }
done

cd "$PROJECT_ROOT"

# 构建安卓APP
echo "🏗️  构建安卓APP..."
cd mobile

# 检查Android SDK
if [ -z "$ANDROID_HOME" ]; then
    echo "⚠️  警告: ANDROID_HOME环境变量未设置"
    echo "如果构建失败，请安装Android Studio并设置ANDROID_HOME环境变量"
    echo "通常路径为: ~/Android/Sdk"
fi

# 添加Android平台（如果还没有）
cordova platform add android 2>/dev/null || echo "Android平台已存在"

# 构建调试版本
cordova build android --debug

if [ $? -eq 0 ]; then
    echo "✅ 安卓APP构建成功！"
    
    # 查找生成的APK文件
    APK_FILE=$(find platforms/android -name "*.apk" -type f | head -1)
    
    if [ -n "$APK_FILE" ]; then
        # 复制APK到项目根目录
        cp "$APK_FILE" "$PROJECT_ROOT/记账本.apk"
        echo "📱 APK文件已生成: $PROJECT_ROOT/记账本.apk"
        echo ""
        echo "🚀 安装说明："
        echo "1. 将 记账本.apk 文件传输到Android设备"
        echo "2. 在设备上启用'未知来源'安装"
        echo "3. 点击APK文件进行安装"
        echo ""
        echo "⚠️  重要提醒："
        echo "- 确保后端服务在 http://${LOCAL_IP}:3000 上运行"
        echo "- 手机需要连接到同一WiFi网络"
        echo "- 首次启动可能需要几秒钟加载"
    else
        echo "❌ 未找到生成的APK文件"
        echo "检查 platforms/android 目录："
        ls -la platforms/android/app/build/outputs/apk/ 2>/dev/null || echo "APK输出目录不存在"
    fi
else
    echo "❌ 构建失败，请检查错误信息"
    echo ""
    echo "常见问题解决："
    echo "1. 确保已安装Android SDK"
    echo "2. 设置ANDROID_HOME环境变量"
    echo "3. 安装Java JDK 8或更高版本"
    echo "4. 检查Android SDK Build Tools版本"
    exit 1
fi